package edu.gdkm.ssm.dao;

import edu.gdkm.ssm.domain.Permission;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 权限资源仓储
 */
public interface IPermissionDao {

    /**
     * 根据角色id查找对应的权限资源信息
     * @param roleId  角色id
     * @return  对应的权限资源信息
     * @throws Exception
     */
    @Select("select * from permission where id in (select permissionId from role_permission where roleId=#{roleId} )")
    List<Permission> findPermissionByRoleId(String roleId) throws Exception;

    /**
     * 查找所有权限资源信息
     * @return 所有权限资源信息
     */
    @Select("select * from permission")
    List<Permission> findAll();

    /**
     * 插入新的权限资源信息
     * @param permission 权限资源信息
     */
    @Insert("insert into permission (id, permissionName, url) value (replace(uuid(), '-', ''), #{permissionName}, #{url})")
    void save(Permission permission);

    /**
     * 根据权限id删除角色与权限关联表信息
     * @param id 权限id
     */
    @Delete("delete from role_permission where permissionId=#{id}")
    void deleteFromRole_Permission(String id);

    /**
     * 根据权限id删除权限信息
     * @param id 权限id
     */
    @Delete("delete from permission where id=#{id}")
    void deleteById(String id);

    /**
     * 根据权限id查找权限信息
     * @param id 权限id
     * @return
     */
    @Select("select * from permission where id=#{id}")
    Permission findById(String id);
}
